<?php
namespace app\service;

use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;
use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationRequest;
use AlibabaCloud\Tea\Utils\Utils;

class AliGreenService {
    /**
     * 创建请求客户端
     * @param $accessKeyId
     * @param $accessKeySecret
     * @param $endpoint
     * @return Green
     */
    public static function create_client(): Green
    {
        $endpoint = "green-cip.cn-shanghai.aliyuncs.com";
        $config = new Config([
            "accessKeyId" => getenv('ALI_SAFE_KEYID'),
            "accessKeySecret" => getenv('ALI_SAFE_SECRET'),
            // 设置HTTP代理。
            // "httpProxy" => "http://10.10.xx.xx:xxxx",
            // 设置HTTPS代理。
            // "httpsProxy" => "https://10.10.xx.xx:xxxx",
            "endpoint" => $endpoint,
        ]);
        return new Green($config);
    }

    /**
     * 提交检测任务
     * @param $accessKeyId
     * @param $accessKeySecret
     * @param $endpoint
     * @return ImageModerationResponse
     */
    public static function invoke($url)
    {
        // 注意：此处实例化的client请尽可能重复使用，避免重复建立连接，提升检测性能。
        $client = self::create_client();
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);
        
        // 检测参数构造。
      	$request = new ImageModerationRequest();
        $serviceParameters = array(
            // 待检测图片，公网可访问的URL。
            'imageUrl' => $url,
            // 检测数据唯一标识。
            'dataId' => uniqid());
      	// 图片检测service：内容安全控制台图片增强版规则配置的serviceCode，示例：baselineCheck
      	// 支持service请参考：https://help.aliyun.com/document_detail/467826.html?0#p-23b-o19-gff  
      	$request->service = "baselineCheck";
        $request->serviceParameters = json_encode($serviceParameters);
        // 提交检测
        $response = $client->imageModerationWithOptions($request, $runtime);
        return json_decode(json_encode($response->body, JSON_UNESCAPED_UNICODE), true);
    }
}